package loggerV2

import (
	"github.com/gin-gonic/gin"
	"go.uber.org/zap"
	"go.uber.org/zap/zapcore"
	"strconv"
)

const loggerKey = iota

// 给指定的context添加字段（关键方法）
func NewContext(ctx *gin.Context, fields ...zapcore.Field) {
	ctx.Set(strconv.Itoa(loggerKey), WithContext(ctx).With(fields...))
}

// 从指定的context返回一个zap实例（关键方法）
func WithContext(ctx *gin.Context) *zap.Logger {
	if ctx == nil {
		return GetLogZap()
	}
	log, _ := ctx.Get(strconv.Itoa(loggerKey))
	ctxLogger, ok := log.(*zap.Logger)
	if ok {
		return ctxLogger
	}
	return GetLogZap()
}
